/**
 * @auther harfe
 * @date 2021/11/5 22:01
 */

/**
 * 给定一个非负整数数组 nums ，你最初位于数组的 第一个下标 。
 *
 * 数组中的每个元素代表你在该位置可以跳跃的最大长度。
 *
 * 判断你是否能够到达最后一个下标
 */
public class CanJump {
    public static void main(String[] args) {
        int[] nums = new int[]{3,2,1,0,4};
        CanJump jump = new CanJump();
        boolean ans = jump.canJump(nums);
        System.out.println(ans);
    }
    //贪心法
    public boolean canJump(int[] nums) {
        int len = nums.length;
        int n = 0;
        for (int i = 0; i <= len - 1; i++) {
            if (i <= n) {
                n = Math.max(n, i + nums[i]);
                if (n >= len - 1){
                    return true;
                }
            }
        }
        return false;
    }

}
